Ruby هي لغة برمجة ديناميكية وكائنية التوجه طورتها يوكيهيرو ماتسوموتو في التسعينيات. تُعرف ببساطتها وقوتها، وتُستخدم بشكل واسع في تطوير الويب (مثل Ruby on Rails)، أتمتة المهام، ومعالجة البيانات. هذه الدورة سترشدك عبر الأساسيات بأمثلة عملية.
Ruby هي لغة بسيطة وأنيقة تُركز على سهولة القراءة والكتابة.
ruby لتشغيل الملفات أو irb للتفاعل.ruby -v.
                            puts "مرحبًا بك في Ruby!"  # ✅ مرحبًا بك في Ruby!
                        
                    Ruby ديناميكية ولا تحتاج إلى تعريف أنواع المتغيرات مسبقًا.
                            name = "علي"
                            age = 25
                            price = 19.99
                            active = true
                            puts "#{name} عمره #{age} ونشط: #{active}"  # ✅ علي عمره 25 ونشط: true
                        
                    التحكم في تدفق البرنامج باستخدام الشروط والتكرار.
                            age = 18
                            if age >= 18
                                puts "بالغ"
                            else
                                puts "قاصر"
                            end
                            [1, 2, 3].each { |n| puts n }  # ✅ 1 2 3
                        
                    الدوال تُستخدم لتنظيم الكود وإعادة استخدامه.
def.
                            def greet(name = "زائر")
                                "مرحبًا، #{name}!"
                            end
                            puts greet("علي")  # ✅ مرحبًا، علي!
                            puts greet         # ✅ مرحبًا، زائر!
                        
                    Ruby يوفر هياكل بيانات مرنة لتخزين العناصر.
[].{}.each للوصول للعناصر.
                            fruits = ["تفاح", "موز"]
                            person = { name: "علي", age: 25 }
                            puts fruits[0]         # ✅ تفاح
                            puts person[:name]     # ✅ علي
                            fruits.each { |f| puts f }  # ✅ تفاح موز
                        
                    Ruby يجعل التعامل مع الملفات سهلاً وقويًا.
File.read لقراءة محتوى الملف.File.write لإنشاء أو تعديل ملف.Dir لإدارة المجلدات.
                            File.write("test.txt", "مرحبًا، Ruby!")
                            content = File.read("test.txt")
                            puts content  # ✅ مرحبًا، Ruby!
                            puts Dir.pwd  # ✅ المسار الحالي
                        
                    Ruby هي لغة كائنية التوجه، وكل شيء فيها كائن.
class.@ للمتغيرات المثيلية.
                            class Person
                                def initialize(name)
                                    @name = name
                                end
                                def greet
                                    puts "مرحبًا، أنا #{@name}!"
                                end
                            end
                            person = Person.new("علي")
                            person.greet  # ✅ مرحبًا، أنا علي!
                        
                    المحددات تتحكم في الوصول إلى الدوال والمتغيرات.
                            class Secret
                                def public_method
                                    puts "عام"
                                end
                                private
                                def private_method
                                    puts "خاص"
                                end
                            end
                            s = Secret.new
                            s.public_method   # ✅ عام
                            # s.private_method # ❌ خطأ
                        
                    إدارة الأخطاء لضمان استمرارية البرنامج.
                            begin
                                result = 10 / 0
                            rescue ZeroDivisionError => e
                                puts "خطأ: #{e}"
                            ensure
                                puts "تم التنفيذ"
                            end  # ✅ خطأ: divided by 0 \n تم التنفيذ
                        
                    الموديولات تُستخدم لتنظيم الكود وإضافة وظائف مشتركة.
module.
                            module Greetings
                                def say_hello
                                    puts "مرحبًا!"
                                end
                            end
                            class Person
                                include Greetings
                            end
                            p = Person.new
                            p.say_hello  # ✅ مرحبًا!
                        
                    Ruby يوفر أدوات قوية لمعالجة النصوص.
+ أو #{}.upcase وsplit.include? لفحص السلاسل.
                            text = "مرحبًا"
                            puts text + " Ruby"      # ✅ مرحبًا Ruby
                            puts text.upcase        # ✅ مرحبًا
                            puts text.include?("ح") # ✅ true
                        
                    الميتا برمجة تتيح تعديل الكود ديناميكيًا أثناء التشغيل.
                            class Dynamic
                                def hello
                                    puts "مرحبًا"
                                end
                            end
                            d = Dynamic.new
                            d.send(:hello)  # ✅ مرحبًا
                            class Dynamic
                                define_method(:greet) do
                                    puts "تحية!"
                                end
                            end
                            d.greet  # ✅ تحية!
                        
                    تطبيق عملي يجمع الأساسيات.
                            class Task
                                attr_accessor :title, :done
                                def initialize(title)
                                    @title = title
                                    @done = false
                                end
                                def complete
                                    @done = true
                                    puts "#{@title} تم إكمالها!"
                                end
                            end
                            tasks = []
                            tasks << Task.new("كتابة كود")
                            tasks << Task.new("اختبار")
                            tasks.each do |task|
                                task.complete
                            end  # ✅ كتابة كود تم إكمالها! \n اختبار تم إكمالها!